﻿#region Copyright Notice
// 
// 
// Copyright (c) 2009-2010 Anindya Chatterjee
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// 
// 
// 
#endregion
using System.Drawing;
using System.IO;

namespace Event.Plugin.Utility
{
    /// <summary>
    /// This interface will communicate the built-in notifier with each event
    /// </summary>
    public interface INotifier
    {
        /// <summary>
        /// Starts animating the notification icon
        /// </summary>
        void StartAnimateIcon();

        /// <summary>
        /// Stops animating the notification icon
        /// </summary>
        void StopAnimateIcon();

        /// <summary>
        /// Shows notify tip window with the necessary info
        /// </summary>
        /// <param name="tipText">Main text for the tip</param>
        /// <param name="tipHeading">Heading of the tip</param>
        /// <param name="tipIcon">Icon for the tip
        /// <param name="sender">Sender event</param>
        /// <remarks>If icon is null default icon will be the app icon</remarks></param>
        void ShowNotifyTipNow(string tipText, string tipHeading, Icon tipIcon, AbstractEvent sender);

        /// <summary>
        /// Show the custom notify tip window with necessary info
        /// </summary>
        /// <param name="notifyTip">Custom notify tip to show</param>
        void ShowNotifyTipNow(BaseNotifyTip notifyTip);

        /// <summary>
        /// Plays a default sound
        /// </summary>
        void PlaySound();

        /// <summary>
        /// Plays a notification sound from the file
        /// </summary>
        /// <param name="soundFile">Location of the sound file</param>
        /// <remarks>Pass null to play a default sound</remarks>
        void PlaySound(string soundFile);

        /// <summary>
        /// Plays a notfication sound from the stream
        /// </summary>
        /// <param name="stream">Sound stream</param>
        /// <remarks>Pass null values to play default sound</remarks>
        void PlaySound(Stream stream);
    }
}